package com.bestcem.xm.award.dao;

import com.bestcem.xm.award.entity.pojo.AwardWinDO;

import java.util.List;

/**
 * 抽奖兑奖码 dao功能dao
 * @author sh.pei <sh.pei@idiaoyan.com>
 * @version v1.0
 * @date 2021/7/8 14:15
 */
public interface AwardWinDao {

    /**
     * 根据id查询兑奖码数据
     * @param id 兑奖码id
     * @return 兑奖码数据
     */
    AwardWinDO findById(String id);

    /**
     * 根据awardId设置兑奖码状态
     * @param awardId 奖励id
     * @param used  是否被使用
     * @return 影响行数
     */
    long updateUsedByAwardId(String awardId, Boolean used);

    /**
     * 根据awardId批量删除兑奖码
     * @param awardId 奖励id
     * @return 删除行数
     */
    long deleteByAwardId(String awardId);

    /**
     * 批量插入兑奖码数据
     * @param awardWins 兑奖码list
     * @return 插入行数
     */
    long insertMany(List<AwardWinDO> awardWins);

    /**
     * 根据奖励id查询兑奖码列表
     * @param awardId 奖励id
     * @param includeFields 指定返回的字段
     * @param excludeFields 指定去除的字段
     * @return 兑奖码列表
     */
    List<AwardWinDO> listByAwardId(String awardId, String[] includeFields, String[] excludeFields);

    /**
     * 根据奖励id, 奖项名称, 使用状态获取兑奖码并修改状态
     *
     * @param awardId 奖励id
     * @param name 奖项名称
     * @param used 使用状态
     * @return 兑奖码信息
     */
    AwardWinDO findAndUpdateByIdAndNameAndUsed(String awardId, String name, Boolean used);
}
